package cn.getech.data.development.constant;


/**
 * @author zenith
 * @Description 所有业务异常的枚举
 * @date 2016年11月12日 下午5:04:51
 */
public enum DataDevelopmentBizExceptionEnum {

    /**
     * 项目
     */
    PROCINFO_PERMISSIOIN(400, "该项目不是你的不可操作"),
    PROCINFO_NOT_EXIST(400, "项目不存在"),
    PROCINFO_EXISTED(400, "项目名重复，请重新输入"),
    DESC_TOO_LONG(400,"项目描述字数超出范围(1~100)，请重新输入"),
    NAME_TOO_LONG(400,"项目名称字数超出范围(1~50)，请重新输入"),
    DEPENDED_EXIST(400,"项目下有内容，不可删除"),


    /**
     * 任务
     */
    JOBINFO_ID_NULL(400,"ID编号为空"),
    JOBINFO_DISABLE(400,"该任务已被禁用，启用后再操作"),
    JOBINFO_ENABLE(400,"该任务已被启用，禁用后再操作"),
    JOBINFO_CANT_DELETE(400,"该任务已被启用，禁用后才能删除"),
    JOBINFO_RUN(400, "该任务正在运行，请稍后再试"),
    JOBINFO_NOTRUNNING(400, "该任务没有运行，不可停止"),
    JOBINFO_PERMISSIOIN(400, "该任务不是你的任务不可操作"),

    JOBINFO_EXISTED(400, "任务名重复，请重新输入"),
    JOB_INFO_NOTEXISTED(400, "任务不存在，请重新操作"),
    JOB_INFO_NO_EABLE_STOP(400, "任务为禁用状态，不可以停止任务"),
    JOB_INFO_NO_EABLE(400, "任务为启用状态，不可以修改"),
    JOB_TYPE_0_ERROR(400, "任务类型是开始的没有配置参数"),
    JOB_TYPE_0_TYPE_CONFIG_ERROR(400, "任务类型是开始为循环时没有配置参数"),
    JOB_TYPE_1_ERROR(400, "没有配置参数"),
    JOB_TYPE_1_input_connect_type_ERROR(400, "没有数据源类型"),
    JOB_TYPE_1_input_connect_id_ERROR(400, "没有数据源连接"),
    JOB_TYPE_1_input_input_content_ERROR(400, "没有输入的内容"),
    JOB_TYPE_1_output_db_name_ERROR(400, "没有输出的数据仓库"),
    JOB_TYPE_1_output_table_name_ERROR(400, "没有输出的数据库表"),
    JOB_TYPE_1_output_write_model_ERROR(400, "没有输出的书写模式"),
    //    JOB_TYPE_1_hight_resource_ERROR(400, "任务类型是数据接入的高级设置的计算资源"),
//    JOB_TYPE_1_hight_thread_ERROR(400, "任务类型是数据接入的高级设置的线程数"),
    JOB_TYPE_1_hight_file_num_ERROR(400, "请填写任务类型是数据接入的高级设置的文件数"),
    JOB_TYPE_2_ERROR(400, "请填写任务类型是SQL计算的没有配置参数"),
    JOB_TYPE_2_sql_statment_ERROR(400, "请填写任务类型是SQL计算的sql参数"),
    JOB_TYPE_4_ERROR(400, "请填写任务类型是数据推送的没有配置参数"),
    JOB_TYPE_4_input_input_content_ERROR(400, "请填写任务类型是数据推送的输入内容"),
    JOB_TYPE_4_output_connect_type_ERROR(400, "请填写任务类型是数据推送的输出数据源"),
    JOB_TYPE_4_output_connect_id_ERROR(400, "请填写任务类型是数据推送的输出数据源id"),
    JOB_TYPE_4_output_write_model_ERROR(400, "请填写任务类型是数据推送的输出的书写模式"),
    JOB_TYPE_4_output_pre_statment_ERROR(400, "请填写任务类型是数据推送的输出的前置sql"),
    JOB_TYPE_4_output_fix_statment_ERROR(400, "请填写任务类型是数据接入的数据推送的输出的后置sql"),
    JOB_NODE_ERROR(400,"任务配置有错误，请仔细检查"),
    UPLOAD_JOB_CONF_ERROR(500,"上传配置文件失败!!!"),
    PARTITION_FORMAT_ERROR(500,"分区数据格式不正确"),


    /**
     * 任务节点
     */
    JOB_NODE_DEPEND(400, "该任务下还有节点未删除，暂不能操作"),
    JOB_NODE_NOTEXISTED(400, "任务节点不存在，请重新输入"),
    JOB_NODE_EXIST(400,"该任务下存在节点，是否确定彻底删除"),
    JOB_NODE_DELETE(400,"节点删除异常"),
    JOB_DELETE(400,"任务删除异常"),
    JOB_NODE_START_NO_CONF(400,"请设置开始节点"),
    JOB_NODE_END_NO_CONF(400,"结束任务节点必须配置一个！"),
    JOB_NODE_NO_CONF_EXIST(400,"还有任务节点未进行配置！"),
    JOB_NODE_NULL(400,"请设置任务节点！"),
    START_NODE_WITHOUT_NEXT_NODE(400,"开始任务节点没有连接下级任务！"),
    CONNECT_END_NODE_ERROR(400,"未连接到结束节点！"),
    A_JOB_NODE_NO_CONF_EXIST(400,"存在%s任务节点没有配置节点信息！"),

    /**
     * 数据仓库
     */
    TABLE_PERMISSIOIN(400, "该表不是你创建的不可操作"),
    TABLE_EXIST(400, "表已经存在"),
    TABLE_NOT_EXIST(400, "表不存在"),
    TABLE_DEPEND_PROC(400, " 当前表已被项目关联，不可删除"),
    TABLE_NO_JOBID_OR_PROCID(400,"工程id或者任务id不能为空"),
    DEPEND_EXISTED(400, "有引用，不能操作"),
    SERVER_ERROR(500, "服务器错误"),
    LINK_ANALYSIS_JOBINFO_EXIST(500,"有关联的分析任务，则不能删除！"),
    LINK_ANALYSIS_JOBINFO_RUNNING(500,"有正在运行的分析任务，则不能编辑！"),
    DATE_TYPE_NOT_SUPPORT(500,"该表格式不支持date类型字段"),
    PRIMARY_KEY_EXIST(500,"表字段存在关键字，请仔细检查"),
    DELIMIT_NOT_EXITS(500,"该分隔符类型不存在"),
    NO_DELIMIT(500,"未配置分隔符"),

    /**
     * 数据源
     */

    CONF_CONNECT_PERMISSIOIN(400, "该数据源不是你的不可操作"),
    CONF_CONNECT_NOT_EXIST(400, "数据源不存在"),
    CONF_CONNECT_EXISTED(400, "数据源名和ip重复，请重新输入"),
    CONF_CONNECT_FIELD_NULL(400,"未找到数据源配置信息"),
    /**
     * 模型相关
     */
    MODEL_NOT_EXIST_IN_MYSQL(500,"后台错误，未查询到模型数据"),
    MODEL_NOT_EXIST_IN_HDFS(500,"后台错误，此模型在数据仓库中不存在"),
    MODEL_SAVE_ERROR_IN_MYSQL(500,"模型文件MYSQL存储出现错误"),
    MODEL_SAVE_ERROR_IN_HDFS(500,"模型文件HDFS存储出现错误"),
    MODEL_TYPE_ERROR(400,"文件格式错误"),
    MODEL_NAME_IS_NULL(400,"文件未命名"),
    MODEL_IN_MYSQLTABLE_NULL(400,"未获得要编辑的模型ID"),
    PARAM_NOT_FOUND(400,"缺少查询参数"),
    MODEL_NAME_NULL(400,"模型名称不能为空"),
    MODEL_DESC_NULL(400,"模型描述不能为空"),
    MODEL_CONTENT_EMOTY(400,"您上传的模型文件内容为空"),
    MODEL_FILE_NULL(400,"您需要上传模型文件"),
    MODEL_NOT_FOUND_IN_HDFS(500,"后台错误，未找到模型文件"),
    MODEL_DELETE_ERROR(500,"模型删除错误"),
    PARAM_CANT_NULL(400,"传参不能为空"),
    DATA_NOT_FOUND(500,"未查询到数据，请您重新选择"),
    CREATE_TABLE_ERROR(500,"创建数据仓库表时出现错误"),
    MODEL_INPUT_NOT_FOUND(400,"您上传的模型%s为空"),
    /**
     * token异常
     */
    TOKEN_EXPIRED(700, "token过期"),
    TOKEN_ERROR(700, "token验证失败"),

    /**
     * 签名异常
     */
    SIGN_ERROR(700, "签名验证失败"),

    /**
     * Excel相关
     */
    EXCLE_READ_ERROR(500,"Excel读取异常"),
    PATH_CREATE_ERROR(500,"创建临时文件错误"),
    PRIMARY_FILE_DELETE_ERROR(500,"删除原来的文件错误"),
    PARSE_EXCEL_ERROR(500,"解析excel文件出错"),
    SHEET_NULL(400,"您上传的文件未发现sheet"),
    EXCEL_WRITE_ERROR(500,"保存临时文件错误"),
    SQL_ON_EXCEL_ERROR(500,"sql保存临时文件信息错误"),
    EXIST_SAME_HEAD(400,"Excel文件%s中有相同的表头列"),
    MAIN_SHEET_EXIST_SAME_ROW(400,"您选择的%s的主键列%s"),
    GET_COMMON_HEAD_ERROR(500,"获取共同表头信息时错误，请您重新上传文件"),
    DELETE_TEMP_FILE_ERROR(500,"删除临时文件错误"),
    FILE_TYPE_ERROR(400,"请您上传xlsx格式文件"),
    SHEET_NOT_MATCH(400,"上传的sheet数据不存在"),
    FILE_TOO_LARGE(400,"您上传的文件超过10M"),
    HEAD_EXSIT_NULL(400,"%s表头存在空值"),
    MERGE_DATA_ERROR(500,"合并数据错误"),
    FILE_NULL(400,"请您上传文件"),
    FILE_EMPTY(400,"文件内容为空,请您重新上传"),
    HAS_DOUHAO(400,"单元格内有逗号"),
    /**
     * 其他
     */
    PARAM_ERROR(400,"参数错误"),
    PARAM_FAIL_ERROR(400,"%s参数错误"),
    PARAM_NO_EXIT_ERROR(400,"%s数据不存在"),
    PARAM_AND_ERROR(400,"任务类型参数错误"),
    AUTH_REQUEST_ERROR(400, "账号密码错误"),
    DATA_SAVE_ERROR(400,"节点信息保存错误"),
    SQL_CONNECT_FAIL(400,"建立数据库连接失败"),
    SQL_CONNECT_CLOSE_FAIL(400,"数据库连接关闭失败"),
    HDFS_CONFIG_ERROR(500,"HDFS链接初始化失败"),
    DRIVER_LOAD_FAIL(400,"驱动加载失败"),
    PARAM_NEED_FAIL_ERROR(400,"%s参数必传"),
    NAME_DOUBLE_FAIL_ERROR(400,"%s重复！"),
    ANALYSIS_INFO_STATUS_FAIL(400,"分析任务状态为%s,不能进行相应的操作！"),
    SQL_ILLEGAL(400,"sql语句不合规"),
    URL_NOT_ILLEGAL(400,"您输入的URL不合规"),
    RETURN_INFO_ERROR(500,"获取返回值错误"),
    JIEKOU_ERROR(500,"服务器接口调用出错"),
    JAR_LOCATION_ON_LINUX_NOT_FOUND(500,"项目所在目录未找到"),
    DATE_PARSE_ERROR(500,"日期转换错误"),
    REDIS_ERROR(500,"Redis服务异常"),

    /**
     * kafka
     * @param code
     * @param message
     */
    KAFKA_MODELID_NOT_SAME(500,"kafka数据模型ID不一致"),
    KAFKA_PARAM_ERROR(500,"kafka数据中没有pre字段"),


    /**
     * SQL过滤相关
     */
    ILLEGAL_STR(500,"包含非法字符"),

    /**
     * 表是否有权限查看
     */
    TABLE_NO_PREMISSION(500,"%s表没有权限！"),
    TABLE_NO_COLUMN_NO_PREMISSION(500,"%s表所有字段没有权限！"),
    ROLE_NO_PREMISSION_DB(500,"用户对应的角色没有数据库权限!"),
    USER_NO_PREMISSION_DB(500,"库%s没有权限!"),
    ROLE_NO_PREMISSION_DB_FOUND(500,"数据库权限不存在!"),
    DB_NO_PREMISSION(500,"%s数据库没有权限查看！"),
    ROLE_NO_PREMISSION_TABLE(500,"%s表没有权限!"),
    ROLE_NO_PREMISSION_TABLE_LEVEL(500,"用户对应的表的等级没有权限!"),

    DELETE_NO_PERMISSION(500,"没有删除该数据的权限！"),
    UPDATE_NO_PERMISSION(500,"没有编辑该数据的权限！"),
    FIELD_CREATE_NO_PERMISSION(500,"无表字段创建权限" ),
    DELETE_FIELD_NO_PERMISSION(500,"无字段删除权限" ),
    UPDATE_FIELD_NO_PERMISSION(500,"无字段编辑权限" ),

    REASON_NO_INPUT(500,"请输入拒绝理由" ),

    /**
     * 角色相关
     */
    ROLE_NOTFOUND(400,"角色不存在"),

    /**
     * 表相关
     */
    TABLE_ID_NOT_FOUND(500,"表id参数未传递!"),
    TABLE_NOT_FOUND(500,"表不存在!"),
    TABLE_RULES_ID_NOT_FOUND(500,"表规则id参数未传递!"),
    TABLE_MASK_RULES_NOT_FOUND(500,"表脱敏规则是否开启未传!"),
    TABLE_MASK_RULES_ID_NOT_FOUND(500,"表的脱敏规则id参数未传递!"),
    TABLE_LEVEL_ID_NOT_FOUND(500,"表的等级不存在!"),
    TABLE_MASK_TYPE_ID_NOT_FOUND(500,"加密方式未传!"),
    TABLE_FIELD_ID_NOT_FOUND(500,"字段id未传!"),
    TABLE_MASK_TYPE_NOT_FOUND(500,"加密方式不正确!"),
    TABLE_FIELD_MASK_RULES_HAVE_FOUND(500,"该字段已经配置过脱敏规则!"),
    TABLE_FIELD_NOT_FOUND(500,"表的字段不存在!"),
    TABLE_MASK_NOT_FOUND(500,"脱敏规则不存在!"),
    TABLE_ROW_RILES_HAVE_EXIT(500,"同一角色同一表的行规则只能配置一个!"),
    TABLE_MASK_RILES_UPDATE_ERROR(500,"数据脱敏规则不能修改表的字段!"),
    NO_INIT_EN_TYPE(500,"未初始化加密方式!"),
    DATA_TYPE_NOT_EN_TYPE(500,"boolean、int、long、float类型的不能加密!"),
    PARAM_ERROR_VALUE(500,"区间必须填写!"),
    PARAM_ERROR_START_END(500,"截止值必须大于开始值!"),
    PARAM_ERROR_VALUE_NUMBER(500,"区间必须是数字!"),
    PARAM_ERROR_INNER_UDF(500,"内置的udf没有注册到hive!"),




    /**
     * ranger-api相关
     */
    RANGER_API_GET_SERVICE_BY_NAME(500,"获取ranger服务异常！"),
    RANGER_API_GET_SERVICE_BY_NAME_PARAM_NAME(500,"获取ranger服务时，服务名参数异常！"),
    RANGER_API_DELETE_SERVICE_BY_NAME(500,"删除ranger异常！"),
    RANGER_API_DELETE_SERVICE_BY_NAME_PARAM_NAME(500,"删除ranger服务时，服务名参数异常！"),
    RANGER_API_POST_SERVICE(500,"新增ranger服务异常！"),
    RANGER_API_PUT_SERVICE_BY_NAME_PARAM_NAME(500,"修改ranger服务时，服务名参数异常！"),
    RANGER_API_PUT_SERVICE(500,"修改ranger服务异常！"),
    RANGER_API_POST_POLICY(500,"新增ranger策略异常！"),
    RANGER_API_GET_POLICY(500,"查询ranger策略异常！"),
    RANGER_API_POST_POLICY_APPLY(500,"修改ranger策略异常！"),
    RANGER_API_DELETE_POLICY(500,"删除ranger策略异常！"),
    RANGER_API_POST_USER(500,"新增ranger用户异常！"),
    RANGER_API_GET_USER(500,"获取ranger用户异常！"),
    RANGER_API_DELETE_USER(500,"删除ranger用户异常！"),

    RANGER_API_POST_GROUP(500,"保存组信息异常！"),
    RANGER_API_GET_GROUP(500,"获取ranger组信息异常！" ),
    RANGER_API_DELETE_GROUP(500,"删除组信息异常！" ),


    /**
     * 用户相关
     */
    USER_NOTFOUND(400,"用户不存在"),
    TEL_OR_PASSWORD_ERROR(400,"手机号或密码错误"),
    USER_EXIST(400,"用户已添加")
    ;

    DataDevelopmentBizExceptionEnum(int code, String message) {
        this.code = code;
        this.message = message;
    }

    private Integer code;

    private String message;

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}
